package net.zjitc.listthree.dao;


import net.zjitc.listthree.domin.User;
import net.zjitc.listthree.utils.JDBCUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;

/**
 * @Author Administrator
 * @Date 2020/6/18 16:36
 * 数据访问层dao
 * 实现类，具体实现接口中
 **/
public class UserDaoImpl implements UserDao{
    JdbcTemplate template=new JdbcTemplate(JDBCUtils.getDataSource());
    String sql="";
    @Override
    public List<User> selectAll() {
        /*作用：查询user表，将所有记录封装到List<User>并返回
        * template查询基本用两种返回方法
        * 若查询结果是null会报错，所以最好加上try，，，catch
        * 1）query（）：返回List<>
        2)queryForObject（）:User对象*/
        sql="select * from user2";
        try {
            /*query方法参数
            * 参数1：sql语句
            * 参数2：将查询结果（记录）封装到集合中
            * 参数3：给？赋值*/
            return template.query(sql,new BeanPropertyRowMapper<User>(User.class));

        }catch (Exception e){
            System.out.println(e.getMessage());
            return null;
        }

    }

    @Override
    public User selectByName(String name) {
        sql="select * from user2 where bane=?";
        try {
            return template.queryForObject(sql,new BeanPropertyRowMapper<User>(User.class),name);
        }catch (Exception e){
            System.out.println(e.getMessage());
            return null;
        }
    }

    @Override
    public int insert(User user) {
        sql="insert into user2 values(null,?,?,?,?,?,?,?)";
        return template.update(sql,user.getName(),user.getGender(),user.getAge(),
                user.getAddress(),user.getQq(),user.getEmail());
    }

    @Override
    public void delete(int id) {
        sql="delete from user2 where id=?";
        template.update(sql,id);
    }

    @Override
    public User selectById(int id) {
        return null;
    }

    @Override
    public void update(User user) {
        sql="update user2 set name=?,gender=?,age=?,address=?,qq=?,email=? where id=?";
        template.update(sql,user.getName(),user.getGender(),user.getAge(),user.getAddress(),
                user.getQq(),user.getEmail(),user.getId());
    }
}
